import { reqCart, reqUserUpdataCart,reqAddOrUpdataCart,reqDeleteCart} from '@/api'

const actions = {
  // 获取用户购物车的数据
  async getCartList({ commit }) {
    let result = await reqCart() //发请求,默认不带参数,但在请求头的部分携带了用户的唯一标识uuid
    // 如果状态码为200,则派发mutations
    if (result.code === 200) {
      commit('GETCARTLIST', result.data)
    }
  },
  // 更新商品的选中状态(勾还是不勾)
  async updateChecked({ commit, state, mutations, getters }, { skuId, isChecked }) {
    let res = await reqUserUpdataCart(skuId, isChecked)
    // console.log(res);
    if (res.code === 200) {
      return '勾选状态成功'
    } else {
      return Promise.reject(new Error(result.message))
    }
  },
  // 购物车的加法
  async AddNum({ commit }, { id, addnum }) {
    let res = await reqAddOrUpdataCart(id, addnum)
    // 如果状态码为200 返回成功的promise
    if (res.code === 200) {
      return 'ok'
    }else{
      return Promise.reject(new Error(res.message))
    }
  },
  // 购物车的减法
  async reduceNum({ commit }, { id, reducenum }) {
    let res = await reqAddOrUpdataCart(id, reducenum)
    // 如果状态码为200 返回成功的promise
    if (res.code === 200) {
      return 'ok'
    }else{
      return Promise.reject(new Error(res.message))
    }
  },
  // 删除购物车的某一项商品
  async deletecart({commit},skuId){
    let result = await reqDeleteCart(skuId)
    if (result.code === 200) {
      return 'ok'
    }else{
      return Promise.reject(new Error(res.message))
    }
  } 
}
const mutations = {
  GETCARTLIST(state, value) {
    state.CartList = value
  }
}
const state = {
  CartList: []  //准备初始数据
}
const getters = {
  // 简化数据
  CartList(state) {
    // 第一个或是第一层,是对象结构,避免第一次为初始状态是undefined,一点就报错,空对象点属性没有不会摆错
    // 第二个或是第二层,是对象里面的数组,避免为初始状态,所有或上一个空数组
    return (state.CartList[0] || {}).cartInfoList || []
  }
}

export default {
  actions,
  mutations,
  state,
  getters
}